package app

import (
	"fmt"
)

const (
	redisModeCluster    = "cluster"
	redisModeStandalone = "standalone"
)

// ConfigObserver 动态更新
type ConfigObserver interface {
	OnConfigChanged(key string, data []byte) error
}

type ConfigHandler func(key string, data []byte) error

func (f ConfigHandler) OnConfigChanged(key string, data []byte) error {
	return f(key, data)
}

type redisConf struct {
	Mode        string `json:"mode"`
	Addr        string `json:"addr"`
	Password    string `json:"password"`
	MaxRetries  int    `json:"maxRetries"`
	PoolSize    int    `json:"poolSize"`
	MinIdleConn int    `json:"minIdleConn"`
	MaxConnAge  int    `json:"maxConnAge"`
	IdleTimeout int    `json:"idleTimeout"`
}

func (r *redisConf) String() string {
	return fmt.Sprintf("mode:%v addr:%v password:%v", r.Mode, r.Addr, r.Password)
}

type webConf struct {
	GinMode  string `json:"ginMode"`
	Port     uint16 `json:"port"`
	LimitRPS uint   `json:"limitRPS"`
}
